const webpack = require('webpack')
const path = require('path')
const TerserPlugin = require("terser-webpack-plugin");
const {spawn} = require('child_process')
const {terser} = require('rollup-plugin-terser')
const electron = require('electron')
const rollup = require('rollup')
console.log('start');

console.log(process.argv.slice(2));
let child = null
const watcher = rollup.watch({
    input: './main/index.js',
    plugins: [terser()],
    output: {
        file: './dist/main.js',
        format: 'cjs'
    },
    watch: {
        include: './main/index.js',//监控主进程代码改变
        exclude: 'node_modules/**'
    }
})
const preloadcher = rollup.watch({
    input: './main/preload.js',
    output: {
        file: './dist/preload.js',
        format: 'cjs'
    },
    watch: {
        include: './main/preload.js',//监控主进程代码改变
        exclude: 'node_modules/**'
    }
})
// 开启打包监听，主进程被改变后重新打包
watcher.on('event', e => {
    if (e.code === 'END') {
        console.log('主进程代码被修改，重新打包完成 ')
        //暂时好像，，没什么用，好似无法成功杀死子进程
        if (child) {
            console.log('进程已存在，删除进程')
            child.kill()
        }
        child = spawn(electron, [path.resolve(__dirname, './dist/main.js')], {
            detached: false //禁止子进程独立出父进程
        });
        child.stdout.on('data', function (data) {
            //stdout返回的log数据会带有\n，需要处理
            let arr = data.toString().split('\n')
            for (let i = 0; i < arr.length; i++) {
                if (i < (arr.length - 1)) {
                    console.log(arr[i])
                } else {
                    if (arr[i] !== '') {
                        console.log(arr[i])
                    }
                }
            }
        })
    }
})
// console.log(webpack)
// const compiler = webpack({
//     entry: {
//         "main":'./main/index.js',
//         "preload":"./main/preload.js"
//     },
//     watch:true,
//     watchOptions:{
//         ignored: /node_modules/
//     },
//     output: {
//         path:path.resolve(__dirname,'./dist'),
//         filename: '[name].js',
//         libraryTarget: 'commonjs2',
//     },
//     target: 'electron-main',
 
//     optimization: {
//         minimize: true,
//         minimizer: [
//           new TerserPlugin({
//             extractComments: false,//不将注释提取到单独的文件中
//           }),
//         ],
//       }
// })
// compiler.watch({}, (err, status) => {
//     if (err || status.hasErrors()) {
//         // 在这里处理错误
//         console.log(err);
//         console.log('err');
//     } else {
        
//         console.log('主进程代码被修改，重新打包完成 ')
//         //暂时好像，，没什么用，好似无法成功杀死子进程
//         if (child) {
//             console.log('进程已存在，删除进程')
//             // child.kill()
//         }else{
//             child = spawn(electron, [path.resolve(__dirname, './dist/main.js')], {
//                 detached: false //禁止子进程独立出父进程
//             });
//             child.stdout.on('data', function (data) {
//                 //stdout返回的log数据会带有\n，需要处理
//                 let arr = data.toString().split('\n')
//                 for (let i = 0; i < arr.length; i++) {
//                     if (i < (arr.length - 1)) {
//                         console.log(arr[i])
//                     } else {
//                         if (arr[i] !== '') {
//                             console.log(arr[i])
//                         }
//                     }
//                 }
//             })
//         }
       
//     }
// })
